<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //指数运算符
        // var res1 = 2 ** 3
        // console.log(res1);


        // var user = {
        //     age:11,
        //     info: {
        //         name:'zs'
        //     }
        // }

        // 短路操作，下面一行代码的含义，先判断user存不存在，如果存在就读取它的info属性，
        // 如果info属性存在就读取它的name属性。如果不存在，后面不执行，如果info不存在，后面不执行

        // if(user && user.info && user.info.name){
        //     console.log('111');
        // }

        // // ES6做法
        // if(user?.info?.name){
        //     console.log('111');
        // }


        // 空值合并 ：？？在判断数据的真假，其中0，'',false,undefind, null 都会被判断为假值，但事实上，
        // 0，''，false都是有效的值，为了把这些有效的值和无效的值undefined和null进行区分，所以出现了空值合并？？解决这个问题
        // 使用场景：判断一个属性的真假，同时要排除0，'',false这些有效的值
        // var  a = null
        // var  b = ''
        // console.log(a || '默认值' );
        // console.log(a ?? '默认值');
        // console.log(b || '默认值' );
        // console.log(b ?? '默认值');


        // function Component(props){
        //     const enable = props.enabled ?? true 
        // }



        // let s1 = Symbol.for('foo')
        // let s1 = Symbol.for('bar')
        // console.log(s1);
        // console.log(s1);


        const st = new Set([1,2,3,4,4,4,5,6,6])
        console.log(st);
        
    </script>
</body>

</html>